# Appendix H: How to update your X16 to latest release
These instructions will guide you how to update your X16 firmware from any previous version to the latest version. This guide will be updated once there are new releases. This guide is applicable for Gen 1 hardware, PRxxxxx boards.
## Table Of Contents
1. [Latest release](#latest-release)
2. [Requirements](#requirements)
3. [Update instructions](#update-instructions)
4. [Appendix: Release history](#appendix-release-history)
5. [Appendix: Stock version numbers](#appendix-stock-version-numbers)
6. [Appendix: How to downgrade from latest release to first release](#appendix-how-to-downgrade-from-latest-release-to-first-release)
## Latest release
| Firmware | Version | Date | Link |
|-----------------|---------|------------|--------------------------------------------------------------------|
| ROM | R48 | 2024-09-06 | https://github.com/X16Community/x16-rom/releases/tag/r48 |
| SMC | 48.0.0 | 2024-12-23 | https://github.com/X16Community/x16-smc/releases/tag/r48.0.0 |
| VERA | 48.0.1 | 2025-01-08 | https://github.com/X16Community/vera-module/releases/tag/v48.0.1 |
| SMC bootloader | 3 | 2024-09-13 | https://github.com/X16Community/x16-smc-bootloader/releases/tag/v3 |
## Requirements
| Property | Requirement |
|----------|------------------------|
| Hardware | Gen 1 PRxxxxx board |
| ROM | Minimum version R43 |
| SMC | Minimum version 43.0.0 |
| VERA | No minimum version |
## Update instructions
### Step 1: Note down your current ROM/SMC/VERA versions (recommended)
#### 1.1 ROM/SMC/VERA versions
Use the `HELP` command to see which versions you currently have.
You may want to take a picture of the screen or write it down, for future reference.
#### 1.2 SMC bootloader version
- Poll bootloader version with this command: `PRINT I2CPEEK($42,$8E)`
- This should be 2 if you have a stock PR board. Note that if you have bootloader 3 it may incorrectly display as 255.
- If you have SMC version 47.2.3 or later, you can use the tool "SMCBLD7.PRG" inside [smc tools] (see step 3) to identify bootloader version based on its CRC-16 checksum, making this a more accurate bootloader test.
- Take a picture of the screen, for future reference.
### Step 2: Take a backup of what you have
#### 2.1 SD card (highly recommended)
- Plug SD card in your PC and make a backup of all files. In case SD card gets corrupted, damaged, or you loose your files otherwise.
- If needed, you can download the latest version of the SD card bundle here: https://github.com/cx16forum/sdcard
#### 2.2 ROM/SMC/VERA (optional)
- If you know your current version numbers (step 1), and do not care about rolling back, you can safely skip this step.
- If you like to preserve the history, and your version is not already archived, you may want to dump it before overwriting it.
If your version is not archived (e.g. ROM prerelease), you may want to make a backup of this one (and give a heads-up on Discord, #kernel).
- Dump tool for ROM/SMC/VERA/RTC: https://cx16forum.com/forum/viewtopic.php?p=34970
- Archive of official releases:
- ROM: https://github.com/X16Community/x16-rom/releases/
- SMC: https://github.com/X16Community/x16-smc/releases/
- VERA: https://github.com/X16Community/vera-module/releases/
- SMC bootloaders: https://github.com/X16Community/x16-smc-bootloader/releases
- Unofficial releases, known to have been delivered with some machines:
- SMC 45.1.0: Dump: https://github.com/FlightControl-User/x16-flash/releases/download/r3.0.0/R45-BINS.zip
- SMC bootloader v2(bad): Dump: Inside [bootloader tools] https://github.com/X16Community/x16-smc/pull/53#issuecomment-2362330198 / src: https://github.com/X16Community/x16-smc/pull/20
- ROM R47 prerelease git 8929A57+: Dump: https://cx16forum.com/forum/viewtopic.php?p=31112 / src: X16Community/x16-rom#213 (exact source is ambiguous due to the +)
- ROM R47 prerelease git 33ACE3A4: Dump: https://cx16forum.com/forum/viewtopic.php?p=31112 / src: X16Community/x16-rom#241
- The tool SMCUPDATE 2.0 allows you to specify a .hex file to install
- This tool works with bootloader 2, but not with bootloader 3
- Tool: https://github.com/stefan-b-jakobsson/x16-smc-update/releases/tag/2.0
- When prompted for file name, enter "x16-smc.ino.hex"
- The tool x16-flash allows you to program the .bin file from the release page
- This tool ignores bootloader version, and works with both v2 and v3
- If bootloader version is 2, you cannot reprogram with the same version
- This tool gives bad recommendation in the case of bad bootloader
- Tool: https://github.com/FlightControl-User/x16-flash/releases/tag/r3.0.0
- These tools can work with the .hex and .bin files found in the release page
- https://github.com/X16Community/x16-smc/releases/tag/r48.0.0
This is based on feedback from users on Discord, and is very approximate. If you have updated info, feel free to send a message on Discord.
### PR00001 to PR00300
| Firmware | Version | Date | Link |
|-----------------|----------------------|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ROM | R47pre git 8929A57+* | 2023-11-06 | Build: https://cx16forum.com/forum/viewtopic.php?p=31112 / src: https://github.com/X16Community/x16-rom/pull/213 (exact source is ambiguous due to the +) |
| SMC | 45.1.0* | 2023-10-18 | Build: https://github.com/FlightControl-User/x16-flash/blob/main/arduino/x16-smc-r45.1-bootloader.hex / src: https://github.com/X16Community/x16-smc/pull/20 |
| VERA | 0.3.2 | 2023-11-20 | https://github.com/X16Community/vera-module/releases/tag/v0.3.2 |
| SMC bootloader | 2 (bad)* | 2023-10-04 | Build: https://github.com/FlightControl-User/x16-flash/blob/main/arduino/x16-smc-r45.1-bootloader.hex / src: https://github.com/stople/x16-smc-bootloader/tree/bad_v2 |
### PR00301 to PR00900
| Firmware | Version | Date | Link |
|-----------------|----------------------|------------|------------------------------------------------------------------------------------------------------------------|
| ROM | R47pre git 33ACE3A4* | 2023-12-24 | Build: https://cx16forum.com/forum/viewtopic.php?p=31112 / src: https://github.com/X16Community/x16-rom/pull/241 |
| SMC | 45.1.0* | 2023-10-18 | |
| VERA | 0.3.2 | 2023-11-20 | |
| SMC bootloader | 2 (bad)* | 2023-10-04 | |
### PR00901 to PR01000
| Firmware | Version | Date | Link |
|-----------------|---------|------------|--------------------------------------------------------------------|
| ROM | R47 | 2024-03-30 | https://github.com/X16Community/x16-rom/releases/tag/r47 |
| SMC | 47.0.0 | 2024-03-30 | https://github.com/X16Community/x16-smc/releases/tag/r47.0.0 |
| VERA | 47.0.2 | 2024-03-30 | https://github.com/X16Community/vera-module/releases/tag/v47.0.2 |
| SMC bootloader | 2 | 2023-10-04 | https://github.com/X16Community/x16-smc-bootloader/releases/tag/v2 |
### PR01001 to PR?????
| Firmware | Version | Date | Link |
|-----------------|---------|------------|--------------------------------------------------------------------|
| ROM | R48 | 2024-09-06 | https://github.com/X16Community/x16-rom/releases/tag/r48 |
| SMC | 47.2.3 | 2024-07-05 | https://github.com/X16Community/x16-smc/releases/tag/r47.2.3 |
| VERA | 47.0.2 | 2024-03-30 | https://github.com/X16Community/vera-module/releases/tag/v47.0.2 |
| SMC bootloader | 2 | 2023-10-04 | https://github.com/X16Community/x16-smc-bootloader/releases/tag/v2 |
### Some stock versions
| Machine | ROM | SMC | VERA | SMC bootloader |
|---------|----------------------|---------|--------|----------------|
| PR00015 | R47pre git 8929A57+* | | | |
| PR00102 | R47pre git 8929A57+* | 45.1.0* | 0.3.2 | 2 (bad)* |
| PR00499 | R47pre git 33ACE3A4* | | | |
| PR00831 | R47pre git 33ACE3A4* | 45.1.0* | 0.3.2 | 2 (bad)* |
| PR00923 | R47 | 47.0.0 | 47.0.2 | 2 |
| PR01011 | R48 | 47.2.3 | 47.0.2 | 2 |
### Step 1: Downgrade bootloader
This is optional, as all bootloaders are backward compatible. If you do not plan to downgrade bootloader, go to step 2.
Run SMCBLD7.PRG. Check if "Boot v3 failsafe" is installed. If it is, and you plan to downgrade to bootloader v2 or older, you must:
- Ensure [any working SMC programming tool and SMC version] is present on SD card
- SMCUPDATE-47.2.3 can be used
- NB: x16-flash with bootloader 2 rejects programming SMC to the same version!
- Downgrade bootloader, using SMCBLW19.PRG
- Computer is now in a critical state. If you power it off, it is bricked.
- In this state, you must perform a SMC programming, to any version, with any tool, to uninstall "boot v3 failsafe".
- If you installed bad v2 bootloader, remember to reset it using jumper wire
### Step 2: Downgrade SMC
Downgrade SMC using any tool
- SMCUPDATE or x16-update
- Note that SMC 45.1.0* or newer is needed if you want to use the bootloader afterwards
- SMC older than R42 is intended for an incompatible hardware revision
### Step 3: Downgrade ROM
Downgrade ROM
- ROM older than R42 is intended for an incompatible hardware revision
### Step 4: Downgrade VERA
Downgrade VERA
- If using VERA.BIN from release page, use the associated FLASHVERA
- If using VERA.BIN released together with x16-flash, use x16-flash to program it
CLICK FOR DETAILS
CLICK FOR DETAILS
CLICK FOR DETAILS
CLICK FOR DETAILS